home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
magic
/
d
/
mtappl.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
9KB
|
204 lines
(*----------------------------------------------------------------------*
* *
* MAGICTOOLS Modula's All purpose GEM Interface Cadre Toolbox *
* ÿ ÿ ÿ ÿ ÿ *
*----------------------------------------------------------------------*
* Version 3.30 02.02.1992 (C)90/91/92 by Peter Hellinger Software *
*----------------------------------------------------------------------*
* Dieses Modul ist urheberrechtlich geschtzt. *
* *
* Die Verffentlichung des Quelltextes oder Teilen daraus, sowie die *
* Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
* oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail- *
* boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen *
* Einverstndnisserklrung des Autors. *
* *
* Die Verbreitung des Moduls als Teil eines gelinkten Programms ist *
* fr Lizenznehmer ausdrcklich erlaubt! Der Autor behlt sich das *
* Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
* widerrufen. *
*----------------------------------------------------------------------*)
(*----------------------------------------------------------------------*
* mtAppl Basisfunktionen einer Applikation *
*----------------------------------------------------------------------*)
DEFINITION MODULE mtAppl;
FROM MagicSys IMPORT Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
IMPORT SYSTEM;
(*----------------------------------------------------------------------*
* Auf die folgenden Variablen NUR LESEND ZUGREIFEN!!! *
*----------------------------------------------------------------------*)
VAR ApplIdent: sINTEGER; (* Application-ID des Programms *)
VDIHandle: sINTEGER; (* Handle der geffneten Workstation *)
MaxWidth: sINTEGER; (* Maximale Anzahl Pixel waagerecht *)
MaxHeight: sINTEGER; (* Maximale Anzahl Pixel senkrecht *)
MaxColors: sINTEGER; (* Maximale Anzahl Farben *)
Bitplanes: sINTEGER; (* Anzahl der Bitplanes *)
CharWidth: sINTEGER; (* Werte von MagicAES.GrafHandle *)
CharHeight: sINTEGER; (* -"- *)
BoxWidth: sINTEGER; (* -"- *)
BoxHeight: sINTEGER; (* -"- *)
DeskX: sINTEGER; (* X-Position des Desktop-Fensters *)
DeskY: sINTEGER; (* Y-Position des Desktop-Fensters *)
AESFontid: sINTEGER; (* Font-ID des AES-Fonts *)
AESFontsize: sINTEGER; (* Hhe des AES-Fonts *)
VAR KaosTos: BOOLEAN; (* Diese Variable zeigt an, ob es
* sich bei der vorliegenden TOS-Version
* um ein KAOS (A. Kromke TOS) handelt.
*)
VAR PrivateWS: sINTEGER;
(* Fr die Module mtDials, mtMenus und mtPopups: Hier handelt
* es sich um eine private Workstation, die nur von diesen Modulen
* benutzt werden sollte. Fr allgemeine Anwendungen sollte die
* Workstation VDIHandle (siehe oben) benutzt werden. Fr merkwrdige
* Effekte bei Benutzung von PrivateWS keine Gewhr!!!
*
* Die Workstation wird defaultmig so eingestellt:
*
* Fllfarbe = wei; Kein Rand beim Fllen zeichnen; Zeichen-
* alignment = Oberkante Zeichenzelle
*)
PROCEDURE ApplInit;
(* Meldet die Applikation beim AES an, ffnet VDI-Workstation mit Handle
* VDIHandle (siehe oben). Wird im Modulkrper ausgefhrt und braucht
* nicht weiter beachtet zu werden!
*)
PROCEDURE InstallTermproc (proc: PROC);
(* Installiert eine Prozedur, welche bei Aufruf von ApplTerm automatisch
* abgearbeitet wird. So knnen Systemresourcen auf einfache Art frei-
* gegeben werden.
*)
PROCEDURE ApplDeinstall;
(* Ruft die installierten Termprocs auf
*)
PROCEDURE ApplTerm (return: sINTEGER);
(* gibt alle benutzten Workstations frei und meldet die Applikation beim
* AES wieder ab. Gibt den Wert return an das aufrufende Programm zurck.
*)
PROCEDURE ApplPath (VAR path: ARRAY OF CHAR);
(* liefert den Pfad, von dem das Programm gestartet wurde *)
PROCEDURE ApplName (VAR name: ARRAY OF CHAR);
(* liefert den Namen, unter dem das Programm gestartet wurde. Dazu mu
* allerdings das Programm mittels shel_write gestartet worden sein.
* Der Atari-Desktop tut dies immer, Gemini setzt zumindest die Parameter
* richtig.
*)
TYPE Device = (Screen, Plotter, Printer, Metafile, Camera, Tablett);
PROCEDURE OpenWorkstation (device: Device; w, h: sINTEGER; rc: BOOLEAN): sINTEGER;
(* ffnet eine Workstation, mit allem Pipapo, returniert Handle.
* Jede ber diese Funktion geffnete Workstation mu mit CloseWorkstation
* wieder geschlossen werden. Ein Aufruf von ApplTerm erledigt dies auch
* sehr elegant.
*
* Bei device = Screen wird eine virtuelle Workstation geffnet, alle
* anderen ffnen eine physikalische Workstation auf dem jeweiligen Gert.
* Dazu mu natrlich ein GDOS geladen sowie der entsprechende Treiber und
* die dazugehrigen Fonts im ASSIGN.SYS angegeben sein. Der Treiber mu
* auch fr das GDOS ladbar sein, sonst gibts blo Murks...
* Bitte unbedingt den Returnwert auf > 0 vergleichen, sonst gibts bei
* der Ausgabe Crash!
*
* Die Parameter w und h spielen nur eine Rolle, wenn ein Matrixdrucker
* angesprochen werden soll. Hier kann die maximale Breite und Hhe in
* Pixel angegeben werden.
*
* Wenn rc = TRUE werden Rasterkoordinaten verwendet, ansonsten werden
* NDC-Koordinaten benutzt.
*
* Alle hier geffneten Workstations werden beim Aufruf von ApplTerm wieder
* geschlossen
*)
PROCEDURE CloseWorkstation (handle: sINTEGER);
(* Schliet eine Workstation *)
PROCEDURE VqGdos (): lCARDINAL;
(* Retuniert den GDOS-Wert (siehe MagicVDI). Prft auch, ob es sich um ein
* ABC-GEM handelt. In diesem Falle retuniert die Prozedur LONG (21) fr
* GEM 2.1
*)
(*----------------------------------------------------------------------*
* Maus-Handling: GEM hat im allgemeinen etwas Probleme mit der Maus. *
* Deshalb ist es sinnvoll, die Maus zentral ber ein *
* Modul zu steuern. *
*----------------------------------------------------------------------*)
PROCEDURE MouseOn;
PROCEDURE MouseArrow;
PROCEDURE MouseCursor;
PROCEDURE MouseBusy;
PROCEDURE MouseFinger;
PROCEDURE MouseHand;
PROCEDURE MouseThincross;
PROCEDURE MouseThickcross;
PROCEDURE MouseOutline;
PROCEDURE MouseUser;
(* Diese Routinen schalten die Maus mit dem jeweilige Bild EIN *)
PROCEDURE MouseOff;
(* Schaltet die Maus AUS *)
PROCEDURE UserMouse (VAR form: ARRAY OF LOC);
(* Setzt eine User-Definierte Maus. Sichtbar erst mit MouseUser! *)
PROCEDURE MouseState (VAR form: sINTEGER; VAR sichtbar: BOOLEAN);
(* Liefert den Modulinternen Status der Maus. Dieser Status mu nicht der
* Wirklichkeit entsprechen, da andere Applikationen (ACC oder unter
* MultiGEM) die Maus verndert haben knnten. Leider gibt es seitens des
* GEM keine Mglichkeit festzustellen, welche Mausform aktiv ist, bzw.
* ob die Maus auch sichtbar ist.
*)
PROCEDURE StoreMouse;
(* Merkt sich die augenblickliche Mausform und Sichtbarkeit. Die Maus
* kann nun verndert werden, eingeschaltet, ausgeschaltet wie auch immer.
* Mit RestoreMouse wird die gemerkte Maus wieder hergestellt. Das gilt
* auch fr eine Userdef-Maus! Die Prozedur ist bis zu einer Tiefe von
* 64 schachtelbar. Die MagicLib- und MagicTools-Module benutzen dies,
* wenn sie (die Module) eine bestimmte Mausform haben wollen. So merkt
* sich z.B. der Fontselector aus mtFonts, wie die Maus vorher war und
* restauriert sie wieder; ebenso verfahren die mtAlerts.
*)
PROCEDURE RestoreMouse;
(* Restauriert eine mit StoreMouse gemerkte Mausform und Sichtbarkeit. *)
PROCEDURE SetMouse (x, y: sCARDINAL);
(* Ein Schmankerl, und dazu noch ganz legal: Mausposition festlegen!*)
PROCEDURE InitMtAppl;
(* Initialisiert das Modul. Wird normalerweise im Modulkrper ausgefhrt
* und braucht somit nicht weiter beachtet werden.
*)
PROCEDURE Intern (i: sINTEGER): SYSTEM.ADDRESS;
(* Interne Prozedur, nicht verwenden! *)
END mtAppl.